package edu.sctu.practice.class02.hujie.my_practice.day20151119collection;

/**
 * Created by hp on 2015/11/30
 */

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

/**
 * 将要完成
 * 1.通过Collections.sort()方法，对Integer泛型的List进行排序；
 * 2.对String泛型的List进行排序；
 * 3.对其他类型泛型的List进行排序，以Student为例
 */
public class CollectionsTest {
    /**
     * 1.通过Collections.sort()方法，对Integer泛型的List进行排序；
     * 创建一个Integer泛型的List，插入是个100以内的补充随机整数，
     * 调用Collections.sort()方法对其进行排序
     */
    public void testSort1() {
        List<Integer> integerList = new ArrayList<Integer>();
        //插入十个100以内的不重复随机整数
        Random random = new Random();
        Integer k;
        for (int i = 0; i < 10; i++) {
            do {
                k = random.nextInt(100);

            } while (integerList.contains(k));
            integerList.add(k);
            System.out.println("成功添加整数：" + k);
        }
        System.out.println("********排序前***********");
        for (Integer integer : integerList) {
            System.out.println("元素：" + integer);
        }
        Collections.sort(integerList);
        System.out.println("********排序后***********");
        for (Integer integer : integerList) {
            System.out.println("元素：" + integer);
        }
    }

    /**
     * 2.对String泛型的List进行排序；
     * 创建String泛型的List，添加三个乱序的String元素
     * 调用sort方法，再次输入排序后的顺序
     */
    public void testsort2() {
        List<String> stringList = new ArrayList<String>();
        stringList.add("microsoft");
        stringList.add("google");
        stringList.add("lenovo");
        System.out.println("**********排序前***********");
        for (String string : stringList) {
            System.out.println("元素：" + string);
        }
        Collections.sort(stringList);
        System.out.println("**********排序后***********");
        for (String string : stringList) {
            System.out.println("元素：" + string);
        }
    }
    /**
     * 随机字符串
     * 1.创建完List<String>之后，往前其中添加随机字符串
     * 2.每条字符串的长度为10以内的随机字符串.
     * 3.每条字符串的每个字符都为随机生成的字符，字符可以重复
     * 4.每条随机字符串不可重复
     * */
//    public void testsortmy(){
//        List<String> stringList = new ArrayList<String>();
//        Random random = new Random();
//        int p;
//        for (int i = 0; i < 10; i++) {
//            do {
//                int p=random.nextInt(62);
//
//            } while (stringList.contains(p));
//            stringList.add("");
//            System.out.println("成功添加字符串：" + p);
//        }
//        System.out.println("**********排序前***********");
//        for (String string : stringList) {
//            System.out.println("元素：" + string);
//        }
//        Collections.sort(stringList);
//        System.out.println("**********排序后***********");
//        for (String string : stringList) {
//            System.out.println("元素：" + string);
//        }
//    }



    /**
     * 2.对String泛型的List进行排序；
     * 创建String泛型的List，添加三个乱序的String元素
     * 调用sort方法，再次输入排序后的顺序
     */
    public void testsort3() {
        List<Student> studentList = new ArrayList<Student>();
        Random random=new Random();
        studentList.add(new Student(random.nextInt(1000)+"","M"));
        studentList.add(new Student(random.nextInt(1000)+"","H"));
        studentList.add(new Student(random.nextInt(1000) + "", "L"));
        studentList.add(new Student(1000 + "", "P"));
        System.out.println("**********排序前***********");
        for (Student student : studentList) {
            System.out.println("学生：" +student.id+ ":"+student.name);
        }
        Collections.sort(studentList);
        System.out.println("**********排序后***********");
        for (Student student : studentList) {
            System.out.println("学生：" +student.id+ ":"+student.name);
        }
        Collections.sort(studentList,new StudentComparator());
        System.out.println("********按照姓名排序后**********");
        for (Student student : studentList) {
            System.out.println("学生：" +student.id+ ":"+student.name);
        }
    }


    public static void main(String[] args) {
        CollectionsTest ct = new CollectionsTest();
//        ct.testSort1();
//        ct.testsort2();
//        ct.testsortmy();
    }
}
